// Copyright 2020-2023 Bloomberg Finance L.P.
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include <rmqperftest_consumerargs.h>

#include <bsl_iostream.h>
#include <bsl_sstream.h>

namespace BloombergLP {
namespace rmqperftest {

bsl::optional<long long> findPriorityValue(bsl::string_view args)
{
    // return the value of x-priority if it exists in the consumer arguments
    // "key=value,..."
    const bsl::string_view priority = "x-priority=";
    const size_t priority_pos       = args.find(priority);

    if (priority_pos == bsl::string_view::npos) {
        return bsl::optional<long long>();
    }

    size_t comma_pos = args.find(",", priority_pos);
    if (comma_pos == bsl::string::npos) {
        comma_pos = args.length();
    }
    const bsl::string_view value =
        args.substr(priority_pos + priority.length(),
                    (comma_pos - (priority_pos + priority.length())));
    bsl::cout << "Found Priority Value of " << value << bsl::endl;
    return bsl::stoll(bsl::string(value));
}

} // namespace rmqperftest
} // namespace BloombergLP
